qx.Class.define("elpintao.frms.productos.pageProductos",
{
	extend : qx.ui.tabview.Page,
	construct : function (appMain)
	{
		this.base(arguments);

		this._appMain = appMain;
		
		this.setLabel('Productos');
		this.setLayout(new qx.ui.layout.Grow());
		this.toggleShowCloseButton();
		
		var nodoActual;
		var nodoPadre;
		var nodoActualModel;
		var boolDragDrop = false;
		var boolModoBuscar = false;
		var stringModoBuscar = null;
		
		var bandera_id_producto="0";
		
		var functionClasificacion = function(nodo) {
			var nodoPadreLocal = nodo.getParent();
			if (nodoPadreLocal==null) return ""; else return functionClasificacion(nodoPadreLocal) + " / " + nodo.getModel().get("descrip");
		};
		
		
		var functionPreparaNodo = function(nodo) {
			var parent = nodo.getParent();
			var clasificacion = "";
			if (parent!=null) {
				clasificacion = parent.getUserData("clasificacion") + " / " + nodo.getModel().get("descrip");
				nodo.setDraggable(true);
			}
			nodo.setUserData("clasificacion", clasificacion);
			nodo.setDroppable(true);
			var children = nodo.getChildren();
			if (children.length > 0) {
				if (txtFiltrar.getValue() != "") nodo.setOpen(true);
				for (var x in children) {
					functionPreparaNodo(children[x]);
				}				
			}
		};
		
		//Menu de contexto
		
		var commandNuevoProducto = new qx.ui.core.Command("Insert");
		commandNuevoProducto.addListener("execute", function(){
			var window = new elpintao.frms.productos.windowProducto(appMain, nodoActualModel.get("id_arbol"), "0", nodoActual.getUserData("clasificacion"));
			window.addListener("aceptado", function(e){
				bandera_id_producto = e.getData();
				nodoActualModel.set("cant_productos", nodoActualModel.get("cant_productos") + 1);
				tree.fireDataEvent("changeSelection", []);
			});
			window.setModal(true);
			appMain.getRoot().add(window);
			window.center();
			window.open();
		});
		var commandEditarPrecios = new qx.ui.core.Command("Enter");
		commandEditarPrecios.setEnabled(false);
		commandEditarPrecios.addListener("execute", function(e) {
			var id_producto = tableModel.getRowData(tblPaciente.getFocusedRow()).id_producto;
			var window = new elpintao.frms.productos.windowPrecios(appMain, nodoActualModel.get("id_arbol"), id_producto, nodoActual.getUserData("clasificacion"));
			window.addListener("aceptado", function(e){
				bandera_id_producto = id_producto;
				if (boolModoBuscar) {
					txtBuscar.fireDataEvent("changeValue");
				} else {
					tree.fireDataEvent("changeSelection", []);
				}
			});
			window.setModal(true);
			appMain.getRoot().add(window);
			window.center();
			window.open();
		});
		
		var menutblPaciente = new controles.menu.Menu();
		var btnNuevoProducto = new qx.ui.menu.Button("Alta producto...", null, commandNuevoProducto); 
		var btnModificarProducto = new qx.ui.menu.Button("Modificar producto...");
		btnModificarProducto.setEnabled(false);
		btnModificarProducto.addListener("execute", function(e) {
			var id_producto = tableModel.getRowData(tblPaciente.getFocusedRow()).id_producto;
			var window = new elpintao.frms.productos.windowProducto(appMain, nodoActualModel.get("id_arbol"), id_producto, nodoActual.getUserData("clasificacion"));
			window.addListener("aceptado", function(e){
				bandera_id_producto = id_producto;
				if (boolModoBuscar) {
					txtBuscar.fireDataEvent("changeValue");
				} else {
					tree.fireDataEvent("changeSelection", []);
				}
			});
			window.setModal(true);
			appMain.getRoot().add(window);
			window.center();
			window.open();
		});
		
		
		var btnEditarPrecios = new qx.ui.menu.Button("Edicion de Precios", null, commandEditarPrecios);
		btnEditarPrecios.setEnabled(false);
		var btnEliminarProducto = new qx.ui.menu.Button("Eliminar producto");
		btnEliminarProducto.setEnabled(false);
		btnEliminarProducto.addListener("execute", function(e){
			var focusedRow = tableModel.getRowData(tblPaciente.getFocusedRow());
			var id_producto = focusedRow.id_producto;
			var texto = "Desea eliminar el producto '" + focusedRow.descrip + "' y todos sus items?";
			for (var x = 0; x < tableModel.getRowCount(); x++) {
				focusedRow = tableModel.getRowData(x);
				if (focusedRow.id_producto == id_producto) {
					//texto = texto + focusedRow.capacidad + focusedRow.color;
				}
			}
			dialog.Dialog.confirm(texto, function(e){
				if (e) {
					var p = {};
					p.id_producto = id_producto;
					p.id_arbol = nodoActualModel.get("id_arbol");
					var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
					try {
						var resultado = rpc.callSync("eliminar_producto", p);
					} catch (ex) {
						alert("Sync exception: " + ex);
					}
					nodoActualModel.set("cant_productos", nodoActualModel.get("cant_productos") - 1);
					if (boolModoBuscar) {
						txtBuscar.fireDataEvent("changeValue");
					} else {
						tree.fireDataEvent("changeSelection", []);
					}
				}
			});
		});
		menutblPaciente.add(btnNuevoProducto);
		menutblPaciente.addSeparator();
		menutblPaciente.add(btnModificarProducto);
		menutblPaciente.add(btnEditarPrecios);
		menutblPaciente.addSeparator();
		menutblPaciente.add(btnEliminarProducto);
		menutblPaciente.memorizar();
		commandNuevoProducto.setEnabled(false);
		
		
		
		
		var splitpane = new qx.ui.splitpane.Pane("horizontal");
		//splitpane.setDecorator("main");
		splitpane.setDecorator(null);
		this.add(splitpane);
		
		

		var commandAgregar = new qx.ui.core.Command("Insert");
		commandAgregar.addListener("execute", function(e){
			nodoActual.setOpen(true);
			var id_padre = nodoActualModel.get("id_arbol");
			
			var p = {};
			p.id_padre = id_padre;
			var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
			try {
				var resultado = rpc.callSync("agregar_nodo", p);
			} catch (ex) {
				alert("Sync exception: " + ex);
			}
			
			nodoActualModel.set("cant_hijos", nodoActualModel.get("cant_hijos") + 1);
			var h = {id_arbol: resultado, id_padre: id_padre, descrip: "Nuevo nodo", cant_hijos: 0, cant_productos: 0, hijos: []};
			var nodo = new qx.ui.tree.TreeFolder("Nuevo nodo");
			nodo.setModel(qx.data.marshal.Json.createModel(h));
			nodoActual.add(nodo);
			tree.setSelection([nodo]);
			qx.event.Timer.once(function(){
				commandCambiar.fireEvent("execute");
			}, this, 100);
		});
	var commandCambiar = new qx.ui.core.Command("F2");
	commandCambiar.setEnabled(false);
	commandCambiar.addListener("execute", function(e){
		var cal = (nodoActual.getLevel() + 2) * nodoActual.getIndent() + 9;
		var popup = new qx.ui.popup.Popup(new qx.ui.layout.Canvas()).set({
			offsetLeft : cal,
        	offsetTop : -25
		});
		popup.addListenerOnce("appear", function(e){
			txtNodo.focus();
		});
		popup.addListenerOnce("disappear", function(e){
			popup.destroy();
		});

		var txtNodo = new qx.ui.form.TextField();
		txtNodo.addListener("keypress", function(e){
			if (e.getKeyIdentifier() == "Escape") {
				popup.hide();
				tree.focus();
			} else if (e.getKeyIdentifier() == "Enter") {
				var descrip = txtNodo.getValue().trim();
				if (descrip=="") {
					popup.hide();
					tree.focus();
				} else {
					var p = {};
					p.id_arbol = nodoActualModel.get("id_arbol");
					p.descrip = descrip;
					var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
					try {
						var resultado = rpc.callSync("modificar_nodo", p);
					} catch (ex) {
						alert("Sync exception: " + ex);
					}
					
					nodoActualModel.set("descrip", descrip)
					nodoActual.setLabel(descrip);
					//alert(nodoActualModel.get("descrip"));
					functionPreparaNodo(nodoActual);
					popup.hide();
					tree.focus();
				}
			}
		});
		txtNodo.setWidth(nodoActual.getBounds().width - cal);
		txtNodo.setValue(nodoActual.getLabel());
		txtNodo.selectAllText();
		txtNodo.setPaddingLeft(1);
		popup.add(txtNodo);
        popup.placeToWidget(nodoActual, true);
        popup.show();
	});
	
	var menu = new controles.menu.Menu();
	var btnAgregar = new qx.ui.menu.Button("Agregar nodo", null, commandAgregar);
	var btnCambiar = new qx.ui.menu.Button("Editar", null, commandCambiar);
	var btnEliminarNodo = new qx.ui.menu.Button("Eliminar nodo");
	btnEliminarNodo.setEnabled(false);
	btnEliminarNodo.addListener("execute", function(e){
		dialog.Dialog.confirm("Desea eliminar el nodo seleccionado?", function(e){
			if (e) {
				var nodoActualLocal = nodoActual;
				var nodoPadreLocal = nodoPadre;
				var nodoPadreModel = nodoPadreLocal.getModel();
				
				var p = {};
				p.id_arbol = nodoActualModel.get("id_arbol");
				p.id_padre = nodoActualModel.get("id_padre");
				var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
				try {
					var resultado = rpc.callSync("eliminar_nodo", p);
				} catch (ex) {
					alert("Sync exception: " + ex);
				}
		
				nodoPadreModel.set("cant_hijos", nodoPadreModel.get("cant_hijos") - 1);
				tree.setSelection([nodoPadreLocal]);
				nodoPadreLocal.remove(nodoActualLocal);
				if (nodoPadreModel.get("cant_hijos")==0) nodoPadreLocal.setOpen(false);
			}
			tree.focus();
		});
	});
	
	var btnArreglarArchivos = new qx.ui.menu.Button("Arreglar archivos");
	btnArreglarArchivos.addListener("execute", function(e){
		var nodos = tree.getItems(true);
		var m = [];
		for (var x in nodos) {
			var o = {};
			o.id_arbol = nodos[x].getModel().get("id_arbol");
			o.clasificacion = nodos[x].getUserData("clasificacion");
			m.push(o);
		}
		
		var p = {};
		p.nodos = m;
		var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
		try {
			var resultado = rpc.callSync("arreglar_archivos", p);
		} catch (ex) {
			alert("Sync exception: " + ex);
		}
		
		alert("Proceso terminado.");
	});
	
	
	menu.add(btnAgregar);
	menu.addSeparator();
	menu.add(btnCambiar);
	menu.add(btnEliminarNodo);
	//menu.add(btnArreglarArchivos);
	menu.memorizar();
	commandAgregar.setEnabled(false);
		
		
		
		var tree = new controles.tree.Tree();
		//tree.setDroppable(true);
		tree.addListener("dragstart", function(e){
			e.addAction("move");
			boolDragDrop = true;
		});
		tree.addListener("dragend", function(e){
			if (e.getCurrentAction()==null) tree.setSelection([nodoActual]);
			boolDragDrop = false;
		});
 		tree.addListener("drop", function(e) {
			//var items = e.getData("items");
			//this.debug(e.getCurrentTarget());
			//this.debug(e.getOriginalTarget());
			var target = e.getTarget();
 			var relatedTarget = e.getRelatedTarget();
 			if (relatedTarget == tblPaciente) {
 				var rowData = tableModel.getRowData(tblPaciente.getFocusedRow());
				var p = {};
				p.id_producto = rowData.id_producto;
				p.id_arbol_actual = nodoActualModel.get("id_arbol");
				p.id_arbol = target.getModel().get("id_arbol");
				p.clasificacion = target.getUserData("clasificacion");
				
				var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
				try {
					var resultado = rpc.callSync("mover_productos", p);
				} catch (ex) {
					alert("Sync exception: " + ex);
				}
				
				nodoActualModel.set("cant_productos", nodoActualModel.get("cant_productos") - 1);
				target.getModel().set("cant_productos", target.getModel().get("cant_productos") + 1)
				bandera_id_producto = rowData.id_producto;

			} else {
				if (relatedTarget != null) {
					var nodos = relatedTarget.getItems(true, true, false);
					var bandera = true;
					for (var x in nodos) {
						if (nodos[x] == target) {
							bandera = false;
							break;
						}
					}
					
					if (bandera) {
						target.setOpen(true);
						nodoPadre.getModel().set("cant_hijos", nodoPadre.getModel().get("cant_hijos") - 1)
						target.getModel().set("cant_hijos", target.getModel().get("cant_hijos") + 1)
						
						nodoPadre.remove(relatedTarget);
						target.add(relatedTarget);
						
						nodoPadre.setOpen(nodoPadre.hasChildren());
						
						functionPreparaNodo(target);
						
						var clasificacion = [];
						for (var x in nodos) {
							clasificacion.push({id_arbol: nodos[x].getModel().get("id_arbol"), clasificacion: nodos[x].getUserData("clasificacion")});
						}
						var p = {};
						p.id_arbol = relatedTarget.getModel().get("id_arbol");
						p.id_padre = target.getModel().get("id_arbol");
						p.id_padre_original = nodoPadre.getModel().get("id_arbol");
						p.clasificacion = clasificacion;
						
						var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
						try {
							var resultado = rpc.callSync("mover_nodo", p);
						} catch (ex) {
							alert("Sync exception: " + ex);
						}
					} else {
						tree.setSelection([nodoActual]);
					}
				}
 			}

 			boolDragDrop = false;
			tblPaciente.resetSelection();
			tree.focus();
			tree.fireDataEvent("changeSelection", []);
			tree.focus();
		});

 		tree.addListener("dragover", function(e) {
			//this.debug(e.getCurrentTarget());
			//this.debug(e.getOriginalTarget());
			//this.debug(e.getRelatedTarget());
			//this.debug(e.getTarget());
			//this.debug("-------------------");
			tree.setSelection([e.getTarget()]);
		});

		
		
		tree.addListener("changeSelection", function(e){
			if (!boolDragDrop) {
				nodoActual = tree.getSelection()[0];
				nodoActualModel = nodoActual.getModel();
				nodoPadre = nodoActual.getParent();
				
				var boolRaiz = (nodoActual.getLevel() == -1);
				
				tableModel.setDataAsMapArray([], true, false);

				var p = {};
				p.id_arbol = nodoActualModel.get("id_arbol");
				p.descrip = txtFiltrar.getValue();
				var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
				try {
					var resultado = rpc.callSync("leer_producto", p);
				} catch (ex) {
					alert("Sync exception: " + ex);
				}
				
				tblPaciente.setFocusedCell();
				
				tableModel.setDataAsMapArray(resultado, true, false);
				if (tableModel.getSortMethods(0)) tableModel.sortByColumn(0, true);
				if (resultado.length > 0) {
					if (bandera_id_producto=="0") {
						tblPaciente.setFocusedCell(0, 0, true);
					} else {
						tblPaciente.buscar("id_producto", bandera_id_producto);
						bandera_id_producto="0";
						tblPaciente.focus();
					}
				}
				
				commandCambiar.setEnabled(!boolRaiz);
				btnEliminarNodo.setEnabled(!boolRaiz && nodoActualModel.get("cant_hijos")==0 && nodoActualModel.get("cant_productos")==0);
				menu.memorizar([commandCambiar, btnEliminarNodo]);
			}
		}, this);

		tree.setContextMenu(menu);
		      
		      


	var composite1 = new qx.ui.container.Composite(new qx.ui.layout.Canvas());
	composite1.setMinWidth(100);
	composite1.setWidth(200);
	composite1.add(new qx.ui.basic.Label("Filtrar:"), {left: 0, top: 3});
	
	var txtFiltrar = new qx.ui.form.TextField("");
	txtFiltrar.setLiveUpdate(true);
	txtFiltrar.addListener("changeValue", function(e){
		store.setUrl("services/class/elpintao/Stores.php?rutina=leer_arbol&descrip=" + txtFiltrar.getValue());
	});

	composite1.add(txtFiltrar, {left: 45, top: 0, right: 0});
	composite1.add(tree, {left: 0, top: 24, right: 0, bottom: 0});
		      
      splitpane.add(composite1, 0);
      
      
		//Tabla

		var tableModel = new qx.ui.table.model.Simple();
		
		tableModel.setColumns(["Fábrica", "Descripción", "Capac.", "U", "Color", "P.lis.+IVA", "Costo", "Precio CF", "Util.CF", "Precio may.", "Util.may."], ["fabrica", "descrip", "capacidad", "unidad", "color", "plmasiva", "costo", "pcfcd", "utilcf", "pmaycd", "utilmay"]);
/*
		tableModel.setSortMethods(0, function(row1, row2) {
			var resultado;
			if (row1[2] == row2[2]) {resultado = 0;} else resultado = ((row1[2] > row2[2]) ? 1 : -1);
			return resultado;
		});
*/
/*
		tableModel.setSortMethods(2, function(row1, row2) {
			var capacidad1 = parseFloat(row1[2])
			var capacidad2 = parseFloat(row2[2])
			if (capacidad1 == capacidad2) {
				return 0;
			} else if (capacidad1 > capacidad2) return 1; else return -1;
		});
*/		
		//tableModel.setEditable(true);
		//tableModel.setColumnEditable(0, true);

		var custom = {tableColumnModel : function(obj) {
			return new qx.ui.table.columnmodel.Resize(obj);
		}};
		
		var tblPaciente = new controles.table.Table(tableModel, custom);
		tblPaciente.getSelectionModel().setSelectionMode(qx.ui.table.selection.Model.SINGLE_SELECTION);
		//tblPaciente.toggleColumnVisibilityButtonVisible();
		tblPaciente.toggleShowCellFocusIndicator();
		tblPaciente.toggleStatusBarVisible();
		tblPaciente.setDraggable(true);
		tblPaciente.addListener("dragstart", function(e){
			e.addAction("move");
			boolDragDrop = true;
		});
		tblPaciente.addListener("dragend", function(e){
			if (e.getCurrentAction()==null) {
				tree.setSelection([nodoActual]);
				tblPaciente.focus();
			}
			boolDragDrop = false;
		});
		tblPaciente.addListener("droprequest", function(e){
			alert("droprequest");
		});
		
		
		
		
		
		var tableColumnModel = tblPaciente.getTableColumnModel();
		/*
		var renderer = new qx.ui.table.cellrenderer.Number();
		renderer.setUseAutoAlign(false);
		tableColumnModel.setDataCellRenderer(5, renderer);
		tableColumnModel.setDataCellRenderer(6, renderer);
		tableColumnModel.setDataCellRenderer(7, renderer);
		tableColumnModel.setDataCellRenderer(8, renderer);
		tableColumnModel.setDataCellRenderer(9, renderer);
		tableColumnModel.setDataCellRenderer(10, renderer);
		*/

		//tableColumnModel.setColumnVisible(0, false);
      // Obtain the behavior object to manipulate
		var resizeBehavior = tableColumnModel.getBehavior();
		resizeBehavior.set(0, {width:"10%", minWidth:100});
		resizeBehavior.set(1, {width:"18%", minWidth:100});
		resizeBehavior.set(2, {width:"8%", minWidth:100});
		resizeBehavior.set(3, {width:"3%"});
		resizeBehavior.set(4, {width:"8%", minWidth:100});
		resizeBehavior.set(5, {width:"9%", minWidth:100});
		resizeBehavior.set(6, {width:"8%", minWidth:100});
		resizeBehavior.set(7, {width:"8%", minWidth:100});
		resizeBehavior.set(8, {width:"8%", minWidth:100});
		resizeBehavior.set(9, {width:"10%", minWidth:100});
		resizeBehavior.set(10, {width:"8%", minWidth:100});

		
		var selectionModel = tblPaciente.getSelectionModel();
		selectionModel.addListener("changeSelection", function(e){
			var bool = (selectionModel.getSelectedCount() > 0);
			commandEditarPrecios.setEnabled(bool);
			btnModificarProducto.setEnabled(bool);
			btnEliminarProducto.setEnabled(bool);

			menutblPaciente.memorizar([commandEditarPrecios, btnModificarProducto, btnEliminarProducto]);
		});

		tblPaciente.setContextMenu(menutblPaciente);
		
		
		
		/*
		tblPaciente.addListener("focus", function(e){
			var t = e.getTarget();
			if (t.getTableModel().getRowCount() > 0) {
				var i = t.getFocusedRow();
				t.getSelectionModel().setSelectionInterval(i, i);
			}
		});
		tblPaciente.addListener("blur", function(e){e.getTarget().resetSelection();});
		*/
		tblPaciente.addListener("cellDblclick", function(e){
			commandEditarPrecios.fireDataEvent("execute");
		});
		

		
		
	var composite2 = new qx.ui.container.Composite(new qx.ui.layout.Canvas());
	//composite1.setMinWidth(100);
	//composite1.setWidth(200);
	composite2.add(new qx.ui.basic.Label("Buscar:"), {left: 4, top: 3});
	
	var txtBuscar = new qx.ui.form.TextField("");
	txtBuscar.setLiveUpdate(true);
	txtBuscar.addListener("changeValue", function(e){
		var texto = txtBuscar.getValue().trim();
		if (texto=="") {
			if (boolModoBuscar) {
				boolModoBuscar = false;
				tree.setEnabled(true);
				txtFiltrar.setEnabled(true);
				commandNuevoProducto.setEnabled(true);
				menutblPaciente.memorizar([commandNuevoProducto]);
				tree.fireDataEvent("changeSelection", []);
			}
		} else if (texto.length >= 3) {
			if (!boolModoBuscar) {
				boolModoBuscar = true;
				tree.setEnabled(false);
				txtFiltrar.setEnabled(false);
				commandNuevoProducto.setEnabled(false);
				menutblPaciente.memorizar([commandNuevoProducto]);
			}
			
			if (stringModoBuscar == null) {
				tableModel.setDataAsMapArray([], true, false);
	
				stringModoBuscar = texto;
				var p = {};
				if (isNaN(parseInt(texto))) p.descrip = texto; else p.cod_interno = texto;
				//p.descrip = stringModoBuscar;
				var rpc = new qx.io.remote.Rpc("services/", "elpintao.Productos");
				rpc.callAsync(function(resultado, error, id){
					tblPaciente.setFocusedCell();
					
					tableModel.setDataAsMapArray(resultado, true, false);
					if (tableModel.getSortMethods(0)) tableModel.sortByColumn(0, true);
					if (resultado.length > 0) {
						if (bandera_id_producto=="0") {
							tblPaciente.setFocusedCell(0, 0, true);
						} else {
							tblPaciente.buscar("id_producto", bandera_id_producto);
							bandera_id_producto="0";
							tblPaciente.focus();
						}
					}
					var texto = txtBuscar.getValue().trim();
					if (texto != stringModoBuscar) {
						stringModoBuscar = null;
						txtBuscar.fireDataEvent("changeValue");
					} else stringModoBuscar = null;
				}, "leer_producto", p);
			}
			
			
			
			
			
			
			
			
			
			
			/*
			try {
				var resultado = rpc.callSync("leer_producto", p);
			} catch (ex) {
				alert("Sync exception: " + ex);
			}
			
			tblPaciente.setFocusedCell();
			
			tableModel.setDataAsMapArray(resultado, true, false);
			if (tableModel.getSortMethods(0)) tableModel.sortByColumn(0, true);
			if (resultado.length > 0) {
				if (bandera_id_producto=="0") {
					tblPaciente.setFocusedCell(0, 0, true);
				} else {
					tblPaciente.buscar("id_producto", bandera_id_producto);
					bandera_id_producto="0";
					tblPaciente.focus();
				}
			}
			*/
		}
	});

	composite2.add(txtBuscar, {left: 45, top: 0, right: 0});
	composite2.add(tblPaciente, {left: 0, top: 24, right: 0, bottom: 0});
		      
      splitpane.add(composite2, 1);
		
      

	var controller = new qx.data.controller.Tree(null, tree, "hijos", "descrip");
      
      var store = new qx.data.store.Json();
      store.bind("model", controller, "model");
      store.addListener("loaded", function(e) {
        var nodo = tree.getRoot();
        nodo.setOpen(true);
        nodo.addListener("changeOpen", function(e){
        	nodo.setOpen(true);
        });
        tree.setSelection([nodo]);
        functionPreparaNodo(nodo);
      });
      store.setUrl("services/class/elpintao/Stores.php?rutina=leer_arbol&descrip=" + txtFiltrar.getValue());
      
	menutblPaciente.addAt(new elpintao.frms.parametros.menubuttonOrdenamiento(tblPaciente, "pageProductos"), 2);

		
	},
	members : 
	{
		_appMain: null,
		_rpc: null
	}
});